import { config } from '../config/config.js';

const tips = {
  1: '抱歉，出现了一个错误'
}

class HTTP{
  request({url, data = {}, method = 'GET'}) {
    return new Promise((resolve, reject) => {
      this._request(url, resolve, reject, data, method);
    })
  }

  _request(url, resolve, reject, data = {}, method = 'GET') {
    wx.request({
      url: config.ApiRootUrl + url,
      method: method,
      data: data,
      header: {
        'content-type': 'application/json',
        'X-Nideshop-Token': wx.getStorageSync('token')
      },
      success: (res) => {
        console.log("success");
        
        const statusCode = res.statusCode.toString();
        if(statusCode.startsWith('2')){
          resolve(res.data);
          // if (res.data.errno == 401) {
          //   //需要登录后才可以操作
          //   let p_code = null;
          //   return this.login().then(res => {
          //     p_code = res.toString();
          //     return this.getUserInfo();
          //   })
          //   .then(res => {
          //     //登录远程服务器
          //     this.request({
          //       url: config.AuthLoginByWeixin,
          //       data: {
          //         code: p_code,
          //         userInfo: res.userInfo
          //       },
          //       method: 'POST'
          //     }).then(res => {
          //       if (res.errno === 0) {
          //         //存储用户信息
          //         wx.setStorageSync('userInfo', res.data.userInfo);
          //         wx.setStorageSync('token', res.data.token);

          //         resolve(res);
          //       } else {
          //         reject(res);
          //       }
          //     }).catch((err) => {
          //       reject(err);
          //     });
          //   })
          //   .catch((err) => {
          //     reject(err);
          //   })
          // }
          // else{
          //   resolve(res.data);
          // }
        }
        else{
          reject(res.errMsg)
        }
      },
      fail: (err) => {
        reject(err)
        console.log("failed")
        this._show_error(1);
      }
    })
  }

  _show_error(error_code){
    if(!error_code){
      error_code = 1;
    }
    const tip = tips[error_code];
    wx.showToast({
      title: tip ? tip : tips[1],
      icon: 'none',
      duration: 2000
    })
  }
  
  /**
  * 检查微信会话是否过期
  */
  checkSession() {
    return new Promise(function (resolve, reject) {
      wx.checkSession({
        success: function () {
          resolve(true);
        },
        fail: function () {
          reject(false);
        }
      })
    });
  }
  
  /**
  * 调用微信登录获取临时登录凭证code
  */
  login() {
    return new Promise(function (resolve, reject) {
      wx.login({
        success: function (res) {
          if (res.code) {
            resolve(res.code);
          } else {
            reject(res);
          }
        },
        fail: function (err) {
          reject(err);
        }
      });
    });
  }

  /**
  * 获取用户信息
  */
  getUserInfo() {
    return new Promise(function (resolve, reject) {
      wx.getUserInfo({
        withCredentials: true,
        success: function (res) {
          resolve(res);
        },
        fail: function (err) {
          reject(err);
        }
      })
    });
  }
}

export { HTTP }